조건 : 매일 24시에 Reset을 해준다.
Reset 디지털 출력을 Pulse로 잡은 경우
hour=@GetTimeHour(); //현재시간을 읽어온다.
min=@GetTimeMin(); //현재 분을 읽어온다.
sec=@GetTimeSec(); //현재 초를 읽어온다.
if ( hour !=23 && flag==0) return;
if ( hour == 23 && min == 59 && flag == 1) return;
// 조건에 맞지 않을 때 아래의 명령을 실행하지 않도록 막아준다.
if ( hour ==23 && min == 59 && sec >=50 && flag == 0 ) {
$Reset = 1;
flag = 1;
return;
}
// 지정시간이 되면 $Reset 이라는 디지털 출력태그에 ON신호를 보내준다.
위와 같은 경우는 출력을 PULSE로 잡은 경우이다. 이때는 출력이 flag에 의해서 출력이 이루어 지기 때문에 감시프로그램 상에서 한번 출력을 해주면 감시 프로그램 상에서는 출력을 해준 것으로 인식하기 때문에 조건이 될 때 까지 다시 출력을 내보내지 않는다.
이것은 감시프로그램에서 한번 출력을 내보내면 ‘쓰기 Error’ 가 나도 재출력을 해주지 않는 다는 것이다. 따라서 이것을 방지하기 위하여 통신프로그램의 메뉴에서 ‘환경|전체환경’에서 ‘쓰기 통신시간 초과 발생시 재시도 횟수’를 3~5회 정도로 설정을 하면 ‘쓰기 Error’문제를 방지할 수 있다.
출력 Reset을 Latch로 잡은 경우
hour = @GetTimeHour();
min = @GetTimeMin();
sec = @GetTimeSec();
if ( hour != 23 && $DI_Reset == 0 ) return;
if ( hour == 23 && min == 59 && $DI_Reset == 1 ) return;
if ( hour == 23 && min == 59 && sec >= 50 && $DI_Reset == 0 ) {
$Reset = 1;
return;
}
if ( hour != 23 && $DI_Reset == 1 ) {
$Reset = 0 ;
}